package projeto.comercial.gerenciaatividade.cgd;

import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Query;

import plataforma.base.cdp.Criterio;
import plataforma.base.cdp.ObjetoPagina;
import plataforma.crudestatico.cgd.DaoBase;
import plataforma.spring.DaoDefault;
import projeto.comercial.funcaoservico.cdp.FuncaoServico;
import projeto.comercial.gerenciarservico.cdp.AlocacaoAtividade;
import projeto.comercial.gerenciarservico.cdp.Atividade;

@DaoDefault
public class DaoAtividade extends DaoBase<Atividade>{
	
	
	@Override
	public Atividade recuperarPorId(Long id) {


		StringBuilder sb = new StringBuilder();
		sb.append(" from Atividade at  "
				+ " left outer join fetch at.funcoes  "
				+ " left outer join fetch at.alocacoes aloc"
				+ " left outer join fetch aloc.responsavel "
				+ " left outer join fetch aloc.funcao "
				+ " left outer join fetch at.informacoes "
				+ " where at.id =:parId ");
		
		Query consulta = getEntityManager().createQuery(sb.toString());
		consulta
		.setParameter("parId", id);
		return (Atividade) consulta.getSingleResult();
	
	}
	/*	
public Collection<Atividade> recuperarTodosPaginado(ObjetoPagina objetoPagina) {
	
		StringBuilder sb = new StringBuilder();
		sb.append(" from Atividade at  "
				+ " left outer join fetch "
				+ " left outer join fetch al.funcao"
				+ " left outer join fetch al.responsavel"	
				+ " where al.responsavel.usuario.id =:parId ");

		if (objetoPagina.getCriteriosSimples() != null) {

			for (Criterio criterio : objetoPagina.getCriteriosSimples()) {

				sb.append(" and " + criterio.toHQL());

			}

		}
		if (objetoPagina.getCriterioOrdenacao() != null)
			sb.append(" order by "
					+ objetoPagina.getCriterioOrdenacao().toString());

		Query consulta = getEntityManager().createQuery(sb.toString());
		consulta.setFirstResult(objetoPagina.getFirstResults());
		consulta.setMaxResults(objetoPagina.getMaxResults());

		return consulta.getResultList();

	}
	
	

	public int recuperarQteTodos(ObjetoPagina objetoPagina) {
				
		StringBuilder sb = new StringBuilder();
		sb.append("select count (al.id) from AlocacaoAtividade al  "			
				+ " where al.responsavel.usuario.id =:parId ");
		
		if (objetoPagina.getCriteriosSimples() != null) {

			for (Criterio criterio : objetoPagina.getCriteriosSimples()) {
				sb.append(" and " + criterio.toHQL());
			}

		}
		Query consulta = getEntityManager().createQuery(sb.toString());
		Long count = (Long) consulta.getSingleResult();

		return count.intValue();
	}

*/
}
